531 research outputs found

    Gradually learning programming supported by a growable programming language

    Get PDF
    Learning programming is a difficult task. The learning process is particularly disorienting when you are approaching programming for the first time. As a student you are exposed to several new concepts (control flow, variable, etc. but also coding, compiling etc.) and new ways to think (algorithms). Teachers try to expose the students gradually to the new concepts by presenting them one by one but the tools at student's disposal do not help: they provide support, suggestion and documentation for the full programming language of choice hampering the teacher's efforts. On the other side, students need to learn real languages and not didactic languages. In this work we propose an approach to gradually teaching programming supported by a programming language that grows---together with its implementation---along with the number of concepts presented to the students. The proposed approach can be applied to the teaching of any programming language and some experiments with Javascript are reported

    Supporting inheritance hierarchy changes in model-based regression test selection

    Get PDF
    Models can be used to ease and manage the development, evolution, and runtime adaptation of a software system. When models are adapted, the resulting models must be rigorously tested. Apart from adding new test cases, it is also important to perform regression testing to ensure that the evolution or adaptation did not break existing functionality. Since regression testing is performed with limited resources and under time constraints, regression test selection (RTS) techniques are needed to reduce the cost of regression testing. Applying model-level RTS for model-based evolution and adaptation is more convenient than using code-level RTS because the test selection process happens at the same level of abstraction as that of evolution and adaptation. In earlier work, we proposed a model-based RTS approach called MaRTS to be used with a fine-grained model-based adaptation framework that targets applications implemented in Java. MaRTS uses UML models consisting of class and activity diagrams. It classifies test cases as obsolete, reusable, or retestable based on changes made to UML class and activity diagrams of the system being adapted. However, MaRTS did not take into account the changes made to the inheritance hierarchy in the class diagram and the impact of these changes on the selection of test cases. This paper extends MaRTS to support such changes, and demonstrates that the extended approach performs as well as or better than code-based RTS approaches in safely selecting regression test cases. While MaRTS can generally be used during any model-driven development or model-based evolution activity, we have developed it in the context of runtime adaptation. We evaluated the extended MaRTS on a set of applications, and compared the results with code-based RTS approaches that also support changes to the inheritance hierarchy. The results showed that the extended MaRTS selected all the test cases relevant to the inheritance hierarchy changes, and that the fault detection ability of the selected test cases was never lower than that of the baseline test cases. The extended MaRTS achieved comparable results to a graph-walk code-based RTS approach (DejaVu), and showed a higher reduction in the number of selected test cases when compared with a static analysis code-based RTS approach (ChEOPSJ)

    A modelling language for the effective design of Java annotations

    Full text link
    This is the author's version of the work. It is posted here for your personal use. Not for redistribution. The definitive Version of Record was published in SAC '15 Proceedings of the 30th Annual ACM Symposium on Applied Computing, http://dx.doi.org/10.1145/2695664.2695717.This paper describes a new modelling language for the ef- fective design of Java annotations. Since their inclusion in the 5th edition of Java, annotations have grown from a use- ful tool for the addition of meta-data to play a central role in many popular software projects. Usually they are con- ceived as sets with dependency and integrity constraints within them; however, the native support provided by Java for expressing this design is very limited. To overcome its de ciencies and make explicit the rich conceptual model which lies behind a set of annotations, we propose a domain-speci c modelling language. The proposal has been implemented as an Eclipse plug- in, including an editor and an integrated code generator that synthesises annotation processors. The language has been tested using a real set of annotations from the Java Per- sistence API (JPA). It has proven to cover a greater scope with respect to other related work in di erent shared areas of application.This work was supported by the Spanish Ministry of Economy and Competitivity with project Go-Lite (TIN2011-24139) and the Community of Madrid with project SICOMORO (S2013/ICE-3006)

    Self-Evolving Petri Nets

    Get PDF
    Nowadays, software evolution is a very hot topic. It is particularly complex when it regards critical and nonstopping systems. Usually, these situations are tackled by hard-coding all the foreseeable evolutions in the application design and code. Neglecting the obvious difficulties in pursuing this approach, we also get the application code and design polluted with details that do not regard the current system functionality, and that hamper design analysis, code reuse and application maintenance in general. Petri Nets (PN), as a formalism for modeling and designing distributed/concurrent software systems, are not exempt from this issue. The goal of this work is to propose a PN based reflective framework that lets everyone model a system able to evolve, keeping separated functional aspects from evolutionary ones and applying evolution to the model only if necessary. Such an approach tries to keep system's model as simple as possible, preserving (and exploiting) ability of formally verifying system properties typical of PN, granting at the same time adaptability

    On the footprints of join points : the blueprint approach

    Get PDF
    Aspect-oriented techniques are widely used to better modularize object-oriented programs by introducing crosscutting concerns in a safe and non-invasive way, i.e., aspectoriented mechanisms better address the modularization of functionality that orthogonally crosscuts the implementation of the application. Unfortunately, as noted by several researchers, most of the current aspect-oriented approaches are too coupled with the application code, and this fact hinders the concerns separability and consequently their re-usability since each aspect is strictly tailored on the base application. Moreover, the join points (i.e., locations affected by a crosscutting concerns) actually are defined at the operation level. It implies that the possible set of join points includes every operation (e.g., method invocations) that the system performs. Whereas, in many contexts we wish to define aspects that are expected to work at the statement level, i.e., by considering as a join point every point between two generic statements (i.e., lines of code). In this paper, we present our approach, called Blueprint, to overcome the abovementioned limitations of the current aspect-oriented approaches. The Blueprint consists of a new aspect-oriented programming language based on modeling the join point selection mechanism at a high-level of abstraction to decouple aspects from the application code. To this regard, we adopt a high-level pattern-based join point model, where join points are described by join point blueprints, i.e., behavioral patterns describing where the join points should be found

    Language components for modular DSLs using traits

    Get PDF
    Recent advances in tooling and modern programming languages have progressively brought back the practice of developing domain-specific languages as a means to improve software development. Consequently, the problem of making composition between languages easier by emphasizing code reuse and componentized programming is a topic of increasing interest in research. In fact, it is not uncommon for different languages to share common features, and, because in the same project different DSLs may coexist to model concepts from different problem areas, it is interesting to study ways to develop modular, extensible languages. Earlier work has shown that traits can be used to modularize the semantics of a language implementation; a lot of attention is often spent on embedded DSLs; even when external DSLs are discussed, the main focus is on modularizing the semantics. In this paper we will show a complete trait-based approach to modularize not only the semantics but also the syntax of external DSLs, thereby simplifying extension and therefore evolution of a language implementation. We show the benefits of implementing these techniques using the Scala programming language

    A long-term clinical trial on the efficacy and safety profile of doxofylline in Asthma: The LESDA study.

    Get PDF
    Doxofylline, an oral methylxanthine with bronchodilator and anti-inflammatory activities, offers a promising alternative to theophylline due to its superior efficacy/safety profile. No long-term studies on the efficacy and safety of doxofylline are currently available in asthma. The aim of the Long-term clinical trial on the Efficacy and Safety profile of Doxofylline in Asthma (LESDA) study was to investigate the safety and efficacy profile of doxofylline administered for one year in asthmatic patients. LESDA was a multicenter, open-label, Phase III, clinical trial in which adult asthmatic patients received the same treatment (oral doxofylline 400 mg t.i.d.) for one year. Efficacy was assessed through periodic pulmonary function tests and by having the subjects keep monthly records of asthma events rates and use of salbutamol as rescue medication. The rate of adverse events (AEs) was recorded during the study. Three-hundred nine patients were screened and allocated in the study. Doxofylline significantly improved the change from baseline in forced expiratory volume in 1 s (FEV1) (+16.90 ± 1.81%, P < 0.001 vs. baseline). Doxofylline also significantly improved the rate of asthma events (events/day: -0.57 ± 0.18, P < 0.05 vs. baseline) and the use of salbutamol as rescue medication (puffs/day: -1.48 ± 0.25, P < 0.01 vs. baseline). The most common AEs were nausea (14.56%), headache (14.24%), insomnia (10.68%), and dyspepsia (10.03%). There were neither serious AEs nor deaths during or shortly after the study. Concluding, doxofylline is effective and well tolerated when administered chronically in asthmatic patients

    Freely annotating C#

    Get PDF
    Reflective programming is becoming popular due to the increasing set of dynamic services provided by execution environments like JVM and CLR. With custom attributes Microsoft introduced an extensible model of reflection for CLR: they can be used as additional decorations on element declarations. The same notion has been introduced in Java 1.5. The annotation model, both in Java and in C#, limits annotations to classes and class members. In this paper we describe [a]C#a, an extension of the C# programming language, that allows programmers to annotate statements and code blocks and retrieve these annotations at run-time. We show how this extension can be reduced to the existing model. A set of operations on annotated code blocks to retrieve annotations and manipulate bytecode is introduced. We also discuss how to use [a]C# to annotate programs giving hints on how to parallelize a sequential method and how it can be implemented by means of the abstractions provided by the run-time of the language. Finally, we show how our model for custom attributes has been realized

    Training load and injury risk in elite Rugby Union:The largest investigation to date

    Get PDF
    AbstractTraining load monitoring has grown in recent years with the acute:chronic workload ratio (ACWR) widely used to aggregate data to inform decision-making on injury risk. Several methods have been described to calculate the ACWR and numerous methodological issues have been raised. Therefore, this study examined the relationship between the ACWR and injury in a sample of 696 players from 13 professional rugby clubs over two seasons for 1718 injuries of all types and a further analysis of 383 soft tissue injuries specifically. Of the 192 comparisons undertaken for both injury groups, 40% (all injury) and 31% (soft tissue injury) were significant. Furthermore, there appeared to be no calculation method that consistently demonstrated a relationship with injury. Some calculation methods supported previous work for a “sweet spot” in injury risk, while a substantial number of methods displayed no such relationship. This study is the largest to date to have investigated the relationship between the ACWR and injury risk and demonstrates that there appears to be no consistent association between the two. This suggests that alternative methods of training load aggregation may provide more useful information, but these should be considered in the wider context of other established risk factors.</jats:p
    • …
    corecore